Network delivery of application-program style functionality has become increasingly important. The ubiquitous client-server platform typically requires that the application program code be loaded and installed on the client computers. This requirement, however, is viewed as substantially increasing the installation and maintenance costs associated with computer networks. Moreover, many client operating system platforms are deemed unstable. Network delivery of applications programs would enable the code to be maintained only on the server-side, rather than distributed throughout the network.
Additionally, there are a number of different business models that are pulling for network delivery of application program functionality. First, it can be used in software sales. A web-based software-sales institution can utilize the Internet, or other public network, to allow customers to “test-drive” the programs, and thereby increase sales. A second justification for deployment arises in the thin-client/network-computer model where the code required for the application-functionality and user data reside on the server. In this situation, when required at the thin client, the application code is provided by the server on an as-needed basis. These servers can even be off-site in an application service provider (ASP) environment. Another justification surrounds the possibility to “rent” programs to users. A large number of potential users may have only limited requirements for certain classes of application programs. Their individual requirements may not justify investment in the typically expensive programs or not justify the costs of client installation. The thought here is to enable these users to rent access to the application programs, preferably via the Internet, to generate new revenue streams for the application software companies.
One solution to providing application program functionality to the client computer via the network involves expanding the functionality of the browser. For example, the term “plug-in” is used to describe a browser code extension. ActiveX and Java are two of the most common code platforms for the browser.
While the solution to provide application program functionality via the browser is attractive in its simplicity, a number of problems exist under current technology. First, providing sophisticated ActiveX and/or Java functionality is still in its infancy and largely untried. Further, it ignores the wealth of existing, stable application programs that have been written and are being written to run directly on operating systems, such as Windows 95/98/NT/2000, Unix, Linux, and Mac OS's.
Related, but limited, solutions attempt to allow potential buyers, for example, to “test drive” the program over the internet. Typically, one of two techniques have been used. First, the selling institution may allow the potential owner to download a trial-version of the program. This version may have reduced capabilities and/or a limited lifetime, where the program is disabled after it has been invoked a set number of times, or after a specified date. This process, however, is complex, often requiring a multi-step process in which the user must accept the download, pick a save-as location, watch the download, quit the browser, find the file on the hard drive, and run an installer, for example. Another technique is to extend the potential purchaser's browser in some fashion using, for example, a Java applet. This approach, however, shares the problems discussed previously relative to ActiveX and Java.
Against this backdrop, most modem computer/network operating systems allow for the execution of code that is stored remotely from the client computer. The systems allow a client computer to mount a physically remote drive, residing on a server or peer computer, and execute the application program residing there. Typically, however, these capabilities of the operating system are only utilized within an institution where an umbrella network management exercises control over both the clients and the servers to realize the necessary security levels, prevent corruption of data on the server side, and configure the client computers to access the server-stored code.